package com.witmore.neutron.ai.web.service;

import com.witmore.neutron.ai.web.controller.bo.PluginBindRequest;
import com.witmore.neutron.ai.web.controller.vo.PluginGroupVO;

import java.util.List;

/**
 * 插件服务接口
 *
 * @author 豆子高
 * @since 2025-07-29
 */
public interface PluginService {

    /**
     * 获取所有可用插件组列表
     * @param agentId 智能体ID（用于判断是否已绑定）
     * @return 插件组列表
     */
    List<PluginGroupVO> getAvailablePluginGroups(Integer agentId);

    /**
     * 获取智能体已绑定的插件组列表
     * @param agentId 智能体ID
     * @return 已绑定插件组列表
     */
    List<PluginGroupVO> getAgentPluginGroups(Integer agentId);

    /**
     * 绑定插件组到智能体
     * @param request 绑定请求参数
     * @return 是否成功
     */
    boolean bindPluginGroup(PluginBindRequest request);

    /**
     * 解绑插件组
     * @param agentId 智能体ID
     * @param pluginGroupId 插件组ID
     * @return 是否成功
     */
    boolean unbindPluginGroup(Integer agentId, Integer pluginGroupId);

    /**
     * 更新插件组绑定配置
     * @param request 更新请求参数
     * @return 是否成功
     */
    boolean updatePluginGroupBinding(PluginBindRequest request);

    /**
     * 获取插件类型名称
     * @param pluginType 插件类型
     * @return 类型名称
     */
    String getPluginTypeName(Integer pluginType);

    /**
     * 获取插件分类名称
     * @param pluginCategory 插件分类
     * @return 分类名称
     */
    String getPluginCategoryName(Integer pluginCategory);

    /**
     * 获取插件组类型名称
     * @param groupType 插件组类型
     * @return 类型名称
     */
    String getPluginGroupTypeName(Integer groupType);
}
